/**
 * @desc 设置字符串(.kebab-case格式)首字母为大写
 * @example
 * convertUpperFirst('hello-world--test') // return 'HelloWorldTest'
 * @param {string} value
 * @param {RegExp} [pattern=/-+([a-z|A-Z])/g] - 匹配规则的正则表达式，默认为 /\\-+([a-z|A-Z])/g
 * @return {string}
 */
// type convertUpperFirst = (value: string, pattern: RegExp) => string
const convertUpperFirst = (
  value: string,
  pattern: RegExp = /-+([a-z|A-Z])/g
): string => {
  if (typeof value === 'string' && pattern.test(value)) {
    return value.replace(pattern, function (match, p1 = '', offset, string) {
      //#region replace方法的用法说明
      /*
    offset:匹配到的子字符串在原字符串中的偏移量。（比如，如果原字符串是 'abcd'，匹配到的子字符串是 'bc'，那么这个参数将会是 1）
    */
      // console.log(arguments) // { '0': '-t', '1': 't', '2': 10, '3': 'collection-tools' }
      //#endregion
      return p1.toUpperCase()
    })
  }
  return value
}

export default convertUpperFirst
// export
